
using System.ServiceModel;
using Needle.Bus.Engine.Schedulers;
namespace Needle.Bus.Engine
{
    /// <summary>
    /// Defines an extensible scheduler that schedules processing time for the stages.
    /// </summary>
    public interface IScheduler<T> : IScheduler, IExtensibleObject<T> where T : class , IScheduler<T>
    {
        void WorkerIdle(Worker<T> worker);
    }
    /// <summary>
    /// Defines the engine that schedules processing time for the stages.
    /// </summary>
    public interface IScheduler  : IEngineComponent 
    {
        /// <summary>
        /// Registers the stage for scheduling.
        /// </summary>
        void Register(IStage stage);
        /// <summary>
        /// Unregisters the stage.
        /// </summary>
        void Unregister(IStage stage);

    }
}
